from flask_wtf import Form
from flask_wtf import TextField
from flask_wtf import SelectMultipleField
from flask_wtf import widgets

from app.validators import Required
from app.validators import length




class TipoItemBuscar(Form):
    """
    #===========================================================================
    # Formulario de busqueda de Tipo Items
    #===========================================================================
    """
    id = TextField()
    nombre = TextField([(Required()) and length(min=0, max=50)])
    
    
class SeleccionarFase(Form):
    fases =  SelectMultipleField('Fases:', coerce=int,
        widget=widgets.ListWidget(prefix_label=False), option_widget=widgets.RadioInput())

  
class TipoItemEditable(Form):
    """
    #===========================================================================
    # Formulario para la creacion y modificacion de tipo items
    #===========================================================================
    """
    
    nombre = TextField('Nombre de Tipo Item:', [(Required()) and length(min=0, max=50)])
    atributos =  SelectMultipleField('Atributos:', [Required()], coerce=int,
        widget=widgets.ListWidget(prefix_label=False), option_widget=widgets.CheckboxInput())
    fase = TextField()
    


class TipoItemNoEditable(Form):
    """
    #===========================================================================
    # Formulario para la consulta y la eliminacion  de tipo items
    #===========================================================================
    """
    
    nombre = TextField('Nombre de fase:')
    atributos =  SelectMultipleField('Atributos:', coerce=int,
        widget=widgets.ListWidget(prefix_label=False), option_widget=widgets.Option())
    fase = TextField()
    
    
class SeleccionarTipoItem(Form):
    tipoItems =  SelectMultipleField('Tipo de Item:', coerce=int,
        widget=widgets.ListWidget(prefix_label=False), option_widget=widgets.RadioInput())
    fase = TextField('Fase seleccionada:')
    

class ImportarTipoItem(Form):
    """
    #===========================================================================
    # Formulario para la creacion a partir de la importacion de tipo items
    #===========================================================================
    """    
    nombre = TextField('Nombre de Tipo Item:', [(Required()) and length(min=0, max=50)])
    atributos =  SelectMultipleField('Atributos:', coerce=int,
        widget=widgets.ListWidget(prefix_label=False), option_widget=widgets.Option())
    fase = TextField('Fase seleccionada:')    
    
    
    